NVIDIA Visual Profiler
NVIDIA Visual Profiler提供了丰富的图形用户环境,可以给出CUDA在后台工作的更多细节。除了提供每个CUDA函数调用的时间分析外,它还能给出如何调用内核函数以及存储器的使用情况等。它有助于定位瓶颈可能出现的位置,并详细解释如何调用内核。
1.使用NVIDIA Visual Profiler进行CUDA分析
Visual Profiler是NVIDIA提供的图形化分析工具,其在成功安装CUDA toolkit后,就能够使用。通过Profiler能够对CUDA应用的CPU和GPU的时间节点进行分析,并能够调优CUDA应用的性能。Visual Profiler的简单使用方法如下所示:
- 启动:在控制终端输入命令:nvvp;如图 5所示的启动后界面。
- 新建session:其创建入口为:FileNew Session,如图所示是新建Session对话框,在该对话框中的File输入框中输入需被分析的可执行文件。
- 分析结果:在新建Session对话框中输入相应的可执行文件后,就能产生分析结果,如图所示。
2.nvprof Profiler:命令行
通过nvprof可以以命令行的形式分析和调优CUDA应用程序。nvprof的使用形式是:
nvprof [options] [CUDA-application] [application-arguments]
- summary模型
这是nvprof的默认模型,在这个模型中只简单输出核函数和CUDA内存复制性能。如对于需要被测试的可执行文件boxFilterNPP,可直接执行命令:nvprof boxFilterNPP。如图所示的结果。
- GPU-Trace和API-Trace模型
这个模型能够以时间轴顺序提供所有在GPU发生的活动点,每个核函数的执行或是复制/赋值都能够详细的显示。如图所示。
- Event/metric Summary模型
通过这个模型能够在指定的NVIDIA GPU上显示所有可用的Event/metric,
- Event/metric Trace Mode
通过这个模型能够显示每个核函数的event和metric值。如图所示。
使用Visual Profiler分析Python程序
- 命令行格式
1 | $ nvprof python train_mnist.py |
输出如下
1 | $ nvprof python examples/stream/cusolver.py [10/1910] |
可以增加额外参数,指定模式。
1 | $ nvprof --print-gpu-trace python train_mnist.py |
输出如下
1 | $ nvprof --print-gpu-trace python examples/stream/cusolver.py |
- 图形化界面
首先使用nvvp将记录文件输出
1 | $ nvprof -o prof.nvvp python train_mnist.py |
然后把.nvvp文件拷贝到要分析的文件夹下,启动nvidia visual profiler
1 | $ nvvp prof.nvvp |
输出如下
参考文献
- CUDA_Profiler_Users_Guide.pdf